package dr.sbs.mdbmbg.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MdbArticleExample {
  protected String orderByClause;

  protected boolean distinct;

  protected List<Criteria> oredCriteria;

  public MdbArticleExample() {
    oredCriteria = new ArrayList<Criteria>();
  }

  public void setOrderByClause(String orderByClause) {
    this.orderByClause = orderByClause;
  }

  public String getOrderByClause() {
    return orderByClause;
  }

  public void setDistinct(boolean distinct) {
    this.distinct = distinct;
  }

  public boolean isDistinct() {
    return distinct;
  }

  public List<Criteria> getOredCriteria() {
    return oredCriteria;
  }

  public void or(Criteria criteria) {
    oredCriteria.add(criteria);
  }

  public Criteria or() {
    Criteria criteria = createCriteriaInternal();
    oredCriteria.add(criteria);
    return criteria;
  }

  public Criteria createCriteria() {
    Criteria criteria = createCriteriaInternal();
    if (oredCriteria.size() == 0) {
      oredCriteria.add(criteria);
    }
    return criteria;
  }

  protected Criteria createCriteriaInternal() {
    Criteria criteria = new Criteria();
    return criteria;
  }

  public void clear() {
    oredCriteria.clear();
    orderByClause = null;
    distinct = false;
  }

  protected abstract static class GeneratedCriteria {
    protected List<Criterion> criteria;

    protected GeneratedCriteria() {
      super();
      criteria = new ArrayList<Criterion>();
    }

    public boolean isValid() {
      return criteria.size() > 0;
    }

    public List<Criterion> getAllCriteria() {
      return criteria;
    }

    public List<Criterion> getCriteria() {
      return criteria;
    }

    protected void addCriterion(String condition) {
      if (condition == null) {
        throw new RuntimeException("Value for condition cannot be null");
      }
      criteria.add(new Criterion(condition));
    }

    protected void addCriterion(String condition, Object value, String property) {
      if (value == null) {
        throw new RuntimeException("Value for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value));
    }

    protected void addCriterion(String condition, Object value1, Object value2, String property) {
      if (value1 == null || value2 == null) {
        throw new RuntimeException("Between values for " + property + " cannot be null");
      }
      criteria.add(new Criterion(condition, value1, value2));
    }

    public Criteria andIdIsNull() {
      addCriterion("id is null");
      return (Criteria) this;
    }

    public Criteria andIdIsNotNull() {
      addCriterion("id is not null");
      return (Criteria) this;
    }

    public Criteria andIdEqualTo(Long value) {
      addCriterion("id =", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotEqualTo(Long value) {
      addCriterion("id <>", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThan(Long value) {
      addCriterion("id >", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdGreaterThanOrEqualTo(Long value) {
      addCriterion("id >=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThan(Long value) {
      addCriterion("id <", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdLessThanOrEqualTo(Long value) {
      addCriterion("id <=", value, "id");
      return (Criteria) this;
    }

    public Criteria andIdIn(List<Long> values) {
      addCriterion("id in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotIn(List<Long> values) {
      addCriterion("id not in", values, "id");
      return (Criteria) this;
    }

    public Criteria andIdBetween(Long value1, Long value2) {
      addCriterion("id between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andIdNotBetween(Long value1, Long value2) {
      addCriterion("id not between", value1, value2, "id");
      return (Criteria) this;
    }

    public Criteria andTitleIsNull() {
      addCriterion("title is null");
      return (Criteria) this;
    }

    public Criteria andTitleIsNotNull() {
      addCriterion("title is not null");
      return (Criteria) this;
    }

    public Criteria andTitleEqualTo(String value) {
      addCriterion("title =", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleNotEqualTo(String value) {
      addCriterion("title <>", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleGreaterThan(String value) {
      addCriterion("title >", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleGreaterThanOrEqualTo(String value) {
      addCriterion("title >=", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleLessThan(String value) {
      addCriterion("title <", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleLessThanOrEqualTo(String value) {
      addCriterion("title <=", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleLike(String value) {
      addCriterion("title like", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleNotLike(String value) {
      addCriterion("title not like", value, "title");
      return (Criteria) this;
    }

    public Criteria andTitleIn(List<String> values) {
      addCriterion("title in", values, "title");
      return (Criteria) this;
    }

    public Criteria andTitleNotIn(List<String> values) {
      addCriterion("title not in", values, "title");
      return (Criteria) this;
    }

    public Criteria andTitleBetween(String value1, String value2) {
      addCriterion("title between", value1, value2, "title");
      return (Criteria) this;
    }

    public Criteria andTitleNotBetween(String value1, String value2) {
      addCriterion("title not between", value1, value2, "title");
      return (Criteria) this;
    }

    public Criteria andIntroIsNull() {
      addCriterion("intro is null");
      return (Criteria) this;
    }

    public Criteria andIntroIsNotNull() {
      addCriterion("intro is not null");
      return (Criteria) this;
    }

    public Criteria andIntroEqualTo(String value) {
      addCriterion("intro =", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroNotEqualTo(String value) {
      addCriterion("intro <>", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroGreaterThan(String value) {
      addCriterion("intro >", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroGreaterThanOrEqualTo(String value) {
      addCriterion("intro >=", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroLessThan(String value) {
      addCriterion("intro <", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroLessThanOrEqualTo(String value) {
      addCriterion("intro <=", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroLike(String value) {
      addCriterion("intro like", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroNotLike(String value) {
      addCriterion("intro not like", value, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroIn(List<String> values) {
      addCriterion("intro in", values, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroNotIn(List<String> values) {
      addCriterion("intro not in", values, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroBetween(String value1, String value2) {
      addCriterion("intro between", value1, value2, "intro");
      return (Criteria) this;
    }

    public Criteria andIntroNotBetween(String value1, String value2) {
      addCriterion("intro not between", value1, value2, "intro");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdIsNull() {
      addCriterion("front_user_id is null");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdIsNotNull() {
      addCriterion("front_user_id is not null");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdEqualTo(Long value) {
      addCriterion("front_user_id =", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdNotEqualTo(Long value) {
      addCriterion("front_user_id <>", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdGreaterThan(Long value) {
      addCriterion("front_user_id >", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdGreaterThanOrEqualTo(Long value) {
      addCriterion("front_user_id >=", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdLessThan(Long value) {
      addCriterion("front_user_id <", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdLessThanOrEqualTo(Long value) {
      addCriterion("front_user_id <=", value, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdIn(List<Long> values) {
      addCriterion("front_user_id in", values, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdNotIn(List<Long> values) {
      addCriterion("front_user_id not in", values, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdBetween(Long value1, Long value2) {
      addCriterion("front_user_id between", value1, value2, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andFrontUserIdNotBetween(Long value1, Long value2) {
      addCriterion("front_user_id not between", value1, value2, "frontUserId");
      return (Criteria) this;
    }

    public Criteria andReadCountIsNull() {
      addCriterion("read_count is null");
      return (Criteria) this;
    }

    public Criteria andReadCountIsNotNull() {
      addCriterion("read_count is not null");
      return (Criteria) this;
    }

    public Criteria andReadCountEqualTo(Integer value) {
      addCriterion("read_count =", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountNotEqualTo(Integer value) {
      addCriterion("read_count <>", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountGreaterThan(Integer value) {
      addCriterion("read_count >", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountGreaterThanOrEqualTo(Integer value) {
      addCriterion("read_count >=", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountLessThan(Integer value) {
      addCriterion("read_count <", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountLessThanOrEqualTo(Integer value) {
      addCriterion("read_count <=", value, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountIn(List<Integer> values) {
      addCriterion("read_count in", values, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountNotIn(List<Integer> values) {
      addCriterion("read_count not in", values, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountBetween(Integer value1, Integer value2) {
      addCriterion("read_count between", value1, value2, "readCount");
      return (Criteria) this;
    }

    public Criteria andReadCountNotBetween(Integer value1, Integer value2) {
      addCriterion("read_count not between", value1, value2, "readCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountIsNull() {
      addCriterion("support_count is null");
      return (Criteria) this;
    }

    public Criteria andSupportCountIsNotNull() {
      addCriterion("support_count is not null");
      return (Criteria) this;
    }

    public Criteria andSupportCountEqualTo(Integer value) {
      addCriterion("support_count =", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountNotEqualTo(Integer value) {
      addCriterion("support_count <>", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountGreaterThan(Integer value) {
      addCriterion("support_count >", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountGreaterThanOrEqualTo(Integer value) {
      addCriterion("support_count >=", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountLessThan(Integer value) {
      addCriterion("support_count <", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountLessThanOrEqualTo(Integer value) {
      addCriterion("support_count <=", value, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountIn(List<Integer> values) {
      addCriterion("support_count in", values, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountNotIn(List<Integer> values) {
      addCriterion("support_count not in", values, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountBetween(Integer value1, Integer value2) {
      addCriterion("support_count between", value1, value2, "supportCount");
      return (Criteria) this;
    }

    public Criteria andSupportCountNotBetween(Integer value1, Integer value2) {
      addCriterion("support_count not between", value1, value2, "supportCount");
      return (Criteria) this;
    }

    public Criteria andStatusIsNull() {
      addCriterion("`status` is null");
      return (Criteria) this;
    }

    public Criteria andStatusIsNotNull() {
      addCriterion("`status` is not null");
      return (Criteria) this;
    }

    public Criteria andStatusEqualTo(Byte value) {
      addCriterion("`status` =", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotEqualTo(Byte value) {
      addCriterion("`status` <>", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusGreaterThan(Byte value) {
      addCriterion("`status` >", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusGreaterThanOrEqualTo(Byte value) {
      addCriterion("`status` >=", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusLessThan(Byte value) {
      addCriterion("`status` <", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusLessThanOrEqualTo(Byte value) {
      addCriterion("`status` <=", value, "status");
      return (Criteria) this;
    }

    public Criteria andStatusIn(List<Byte> values) {
      addCriterion("`status` in", values, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotIn(List<Byte> values) {
      addCriterion("`status` not in", values, "status");
      return (Criteria) this;
    }

    public Criteria andStatusBetween(Byte value1, Byte value2) {
      addCriterion("`status` between", value1, value2, "status");
      return (Criteria) this;
    }

    public Criteria andStatusNotBetween(Byte value1, Byte value2) {
      addCriterion("`status` not between", value1, value2, "status");
      return (Criteria) this;
    }

    public Criteria andCreateTimeIsNull() {
      addCriterion("create_time is null");
      return (Criteria) this;
    }

    public Criteria andCreateTimeIsNotNull() {
      addCriterion("create_time is not null");
      return (Criteria) this;
    }

    public Criteria andCreateTimeEqualTo(Date value) {
      addCriterion("create_time =", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeNotEqualTo(Date value) {
      addCriterion("create_time <>", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeGreaterThan(Date value) {
      addCriterion("create_time >", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
      addCriterion("create_time >=", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeLessThan(Date value) {
      addCriterion("create_time <", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
      addCriterion("create_time <=", value, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeIn(List<Date> values) {
      addCriterion("create_time in", values, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeNotIn(List<Date> values) {
      addCriterion("create_time not in", values, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeBetween(Date value1, Date value2) {
      addCriterion("create_time between", value1, value2, "createTime");
      return (Criteria) this;
    }

    public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
      addCriterion("create_time not between", value1, value2, "createTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeIsNull() {
      addCriterion("update_time is null");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeIsNotNull() {
      addCriterion("update_time is not null");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeEqualTo(Date value) {
      addCriterion("update_time =", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeNotEqualTo(Date value) {
      addCriterion("update_time <>", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeGreaterThan(Date value) {
      addCriterion("update_time >", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
      addCriterion("update_time >=", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeLessThan(Date value) {
      addCriterion("update_time <", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
      addCriterion("update_time <=", value, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeIn(List<Date> values) {
      addCriterion("update_time in", values, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeNotIn(List<Date> values) {
      addCriterion("update_time not in", values, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeBetween(Date value1, Date value2) {
      addCriterion("update_time between", value1, value2, "updateTime");
      return (Criteria) this;
    }

    public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
      addCriterion("update_time not between", value1, value2, "updateTime");
      return (Criteria) this;
    }
  }

  public static class Criteria extends GeneratedCriteria {

    protected Criteria() {
      super();
    }
  }

  public static class Criterion {
    private String condition;

    private Object value;

    private Object secondValue;

    private boolean noValue;

    private boolean singleValue;

    private boolean betweenValue;

    private boolean listValue;

    private String typeHandler;

    public String getCondition() {
      return condition;
    }

    public Object getValue() {
      return value;
    }

    public Object getSecondValue() {
      return secondValue;
    }

    public boolean isNoValue() {
      return noValue;
    }

    public boolean isSingleValue() {
      return singleValue;
    }

    public boolean isBetweenValue() {
      return betweenValue;
    }

    public boolean isListValue() {
      return listValue;
    }

    public String getTypeHandler() {
      return typeHandler;
    }

    protected Criterion(String condition) {
      super();
      this.condition = condition;
      this.typeHandler = null;
      this.noValue = true;
    }

    protected Criterion(String condition, Object value, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.typeHandler = typeHandler;
      if (value instanceof List<?>) {
        this.listValue = true;
      } else {
        this.singleValue = true;
      }
    }

    protected Criterion(String condition, Object value) {
      this(condition, value, null);
    }

    protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
      super();
      this.condition = condition;
      this.value = value;
      this.secondValue = secondValue;
      this.typeHandler = typeHandler;
      this.betweenValue = true;
    }

    protected Criterion(String condition, Object value, Object secondValue) {
      this(condition, value, secondValue, null);
    }
  }
}
